const db = require('../database/index');


// 获取用户信息
exports.getUserInfo = (req, res) => {

    console.log('请求:获取用户信息!!')

    const sql = 'select UserID,UserName,UserAccount,UserPhone from user where UserID=?';

    // req.user.UserID是通过token解析出来的，自动把当前登录的用户id挂载到req.user.UserID上
    db.query(sql, req.user.UserID, (err, result) => {

        // sql执行失败
        if (err) return res.send({ status: 1, message: err.message });

        // 获取用户信息失败
        if (result.length !== 1) return res.send({ status: 1, message: '获取用户信息失败!' });

        // 获取用户信息成功
        res.send({ status: 0, message: '获取用户信息成功!', data: result[0] });
    });

};


// 更新用户信息
exports.updateUserInfo = (req, res) => {
    console.log('请求:更新用户信息')

    // 验证数据是否合法
    if (!req.body.username || !req.body.useraccount || !req.body.password || !req.body.userphone) {
        return res.send({ status: 1, message: '用户信息不能为空!' });
    }
    // 判断密码是否与原来相同
    db.query('select UserPWD from user where UserID=?', req.user.UserID, (err, result) => {
        // sql执行失败
        if (err) return res.send({ status: 1, message: err.message });
        // 用户不存在
        if (result.length !== 1) return res.send({ status: 1, message: '用户不存在!' });
        // 密码和原密码相同
        if (result[0].UserPWD === req.body.password) {
            return res.send({ status: 1, message: '密码和原来相同，请重新输入' });
        }
        else {    // 密码和原密码不相同，可以修改
            // sql语句
            const sql = 'update user set UserName=?,UserAccount=?,UserPWD=?,UserPhone=? where UserID=?';

            console.log(req.body);

            // 执行sql语句
            db.query(sql, [req.body.username, req.body.useraccount, req.body.password, req.body.userphone, req.user.UserID], (err, result) => {

                // sql执行失败
                if (err) return res.send({ status: 1, message: '更新用户信息失败!' });

                // 更新用户信息失败(影响行数不为1)
                if (result.affectedRows !== 1) return res.send({ status: 1, message: '更新用户信息失败!' });

                // 更新用户信息成功
                res.send({ status: 0, message: '更新用户信息成功!' });
            })
        }
    })
}


// 修改用户密码
exports.updatePassword = (req, res) => {

    console.log('请求:修改用户密码')

    // 验证数据是否合法
    if (!req.body.oldpassword || !req.body.newpassword) return res.send({ status: 1, message: '修改密码失败' });

    // 查询用户是否存在
    const sql = 'select * from user where UserID=?';

    db.query(sql, req.user.UserID, (err, results) => {

        // sql执行失败
        if (err) return res.send({ status: 1, message: err.message });

        // 用户不存在
        if (results.length !== 1) return res.send({ status: 1, message: '用户不存在!' });

        console.log('用户信息:', results[0]);

        // 用户存在，验证旧密码是否正确
        if (results[0].UserPWD !== req.body.oldpassword) return res.send({ status: 1, message: '旧密码错误!' });

        // 新密码和旧密码不能相同
        if (req.body.newpassword === results[0].UserPWD) return res.send({ status: 1, message: '新密码不能和旧密码相同!' });

        // 旧密码正确,更新用户密码
        const sql = 'update user set UserPWD=? where UserID=?';

        db.query(sql, [req.body.newpassword, req.user.UserID], (err, result) => {

            // sql执行失败
            if (err) return res.send({ status: 1, message: err.message });

            // 更新密码失败
            if (result.affectedRows !== 1) return res.send({ status: 1, message: '更新密码失败!' });

            // 更新密码成功
            res.send({ status: 0, message: '更新密码成功!' });

        })
    })

}